﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Administracao_Cadastros_acCadContratoVigencia : PageBase
{
    private const string sourcePath = @"C:\Projetos\SMA\V1\Fontes\SMA.GENTEv1\SMA.GENTEv1.Web\Cliente\FileTemp";
    private const string targetPath = @"C:\arquivos\Contratos";
    private const string dbPath = "arq/Contratos/";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Session.Remove("Gestores");
            Session.Remove("ContratoFile");
            Session.Remove("ContratoName");
        }
        CarregarGestores();
    }

    #region Eventos
    protected void btnGravar_Click(object sender, EventArgs e)
    {
        GravarContrato();
    }
    protected void btnLimpar_Click(object sender, EventArgs e)
    {

    }
    protected void RadGrid1_DeleteCommand(object source, GridCommandEventArgs e)
    {
        int idGestor = int.Parse((e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdGestor"].ToString());
        RemoveGestor(idGestor);
    }
    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        if (e.Argument == "Rebind")
        {
            if (Session["ContratoFile"] != null)
            {
                lnkImage.Visible = false;
                lblImage.Text = "Arquivo ''" + Session["ContratoFile"].ToString() + "'' incluído com sucesso.";
            }
        }
        else if (e.Argument == "RebindAndNavigate")
        {
            RadGrid1.MasterTableView.SortExpressions.Clear();
            RadGrid1.MasterTableView.GroupByExpressions.Clear();
            RadGrid1.MasterTableView.CurrentPageIndex = RadGrid1.MasterTableView.PageCount - 1;
            RadGrid1.Rebind();
        }
    }
    #endregion

    #region Metodos
    protected void CarregarGestores()
    {
        List<Gestor> listGestores = null;

        if (Session["Gestores"] != null)
            listGestores = (List<Gestor>)Session["Gestores"];
        else
            listGestores = new List<Gestor>();

        RadGrid1.DataSource = listGestores;
        RadGrid1.DataBind();
    }
    protected void GravarContrato()
    {
        lblResultado.Text = "";

        try 
	    {	        
            List<Gestor> listGestores = null;
            string nomeArquivo = string.Empty;

            if (Session["Gestores"] != null)
            {
                listGestores = (List<Gestor>)Session["Gestores"];

                if (Session["ContratoName"] != null)
                    nomeArquivo = Session["ContratoName"].ToString();

                
                //Contrato

                Contrato contrato = new Contrato();
                contrato.IdContrato = 0;
                contrato.OrganizacaoRelacao = new OrganizacaoPatrocinadorPrestador(IdPatrocinador, IdPrestador);
                contrato.TipoDocumento = new TipoDocumento(1);
                contrato.Descricao = txtTitulo.Text;
                contrato.DataInicioVigencia = DateTime.Parse(dtVigencia.SelectedDate.ToString());
                contrato.DataFimVigencia = DateTime.Parse(dtTermino.SelectedDate.ToString());
                if (dtImplantacao.SelectedDate.ToString() != "")
                    contrato.DataImplantacao = DateTime.Parse(dtImplantacao.SelectedDate.ToString());
                contrato.StatusContrato = new StatusContrato(1);
                contrato.Path = dbPath;
                contrato.Observacao = txtObservacao.Text;

                //ContratoGestor
                List<ContratoGestor> listContratoGestores = new List<ContratoGestor>();
                
                foreach (Gestor item in listGestores)
                {
                    ContratoGestor contratoGestor = new ContratoGestor();
                    Pessoa pessoa = new Pessoa();
                    pessoa.IdPessoa = item.IdGestor;

                    contratoGestor.Pessoa = pessoa;
                    contratoGestor.Status = new Status(1);

                    listContratoGestores.Add(contratoGestor);
                }

                contrato.ContratoGestor = listContratoGestores;

                contrato.SalvarContratoVigencia();

                if (nomeArquivo != "")
                {
                    CopiarArquivo(nomeArquivo, sourcePath, contrato.NomeArquivo, targetPath);
                }

                lblResultado.Text = "Contrato salvo com sucesso!";
            }
            else
            {
                lblResultado.Text = "Adicionar no mínimo um gestor!";
            }
	    }
	    catch (Exception ex)
	    {
		    lblResultado.Text = "Erro:" + ex.Message;
	    }
        
    }
    //protected void SalvarOrganizacao()
    //{
    //    try
    //    {
    //        Double cnpj = Double.Parse(txtCNPJ.Text.Replace(".", "").Replace("-", "").Replace("/", ""));

    //        //Gravar Sindicato
    //        Organizacao organizacao = new Organizacao();
    //        organizacao.IdOrganizacao = organizacao.RetornaIdOrganizacao(cnpj);
    //        organizacao.Cnpj = cnpj;
    //        organizacao.RazaoSocial = txtRazaoSocial.Text;
    //        organizacao.NomeFantasia = txtNomeFantasia.Text;
    //        organizacao.Status = new StatusOrganizacao(int.Parse(rcbStatus.SelectedValue));

    //        //TipoOrganizacaoOrganizacao
    //        List<TipoOrganizacaoOrganizacao> listTipoOrganOrgan = new List<TipoOrganizacaoOrganizacao>();
    //        TipoOrganizacaoOrganizacao tipoOrganOrgan = new TipoOrganizacaoOrganizacao();
    //        tipoOrganOrgan.TipoOrganizacao = new TipoOrganizacao(idTipoSindicato);
    //        listTipoOrganOrgan.Add(tipoOrganOrgan);

    //        organizacao.TipoOrganizacao = listTipoOrganOrgan;

    //        organizacao.Salvar();
    //    }
    //    catch (Exception ex)
    //    {
    //        throw ex;
    //    }
    //}
    protected void RemoveGestor(int idGestor)
    {
        List<Gestor> listGestores = null;

        if (Session["Gestores"] != null)
            listGestores = (List<Gestor>)Session["Gestores"];

        foreach (Gestor item in listGestores)
        {
            if (item.IdGestor == idGestor)
            {
                listGestores.Remove(item);
                break;
            }
        }

        CarregarGestores();
    }
    
    #endregion
}
